1. Any agent that is running in foreground already, is running in foreground.
2. Any agent invoked by agent.Run(), the calling agent waits for the agent to complete.
I'm focusing on the agent that's asking the question whether to run in background. It's probably running in foreground. And it's invoking agent.Run(). And it's waiting for the agent to complete.
If you're really interested in providing both options & running this agent in a background thread, launch it from a formula agent with @PostedCommand().
One more caveat, though.
COM operations can lock up your workstation while they work. While it's possible to minimize the hiccupping & shuddering, and while Excel is actually a master of minimizing this, it still happens, and you'll need to shut off a lot of foreground refreshes *in Excel* to make it happen.